package com.workManager.mapper;

import com.workManager.pojo.TbProjectTasktime;
import com.workManager.pojo.TbProjectTasktimeExample;
import java.util.List;
import java.util.Map;

import com.workManager.vo.CountProjectVo;
import com.workManager.vo.ProjectDetailVo;
import com.workManager.vo.TaskTimeTypeVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface TbProjectTasktimeMapper {
    int countByExample(TbProjectTasktimeExample example);

    int deleteByExample(TbProjectTasktimeExample example);

    int deleteByPrimaryKey(Integer tasktimeId);

    int batchDeleteByConditions(List<TbProjectTasktime> delProjectTaskTimeList);

    int insert(TbProjectTasktime record);

    int insertSelective(TbProjectTasktime record);

    List<TbProjectTasktime> selectByExample(TbProjectTasktimeExample example);

    TbProjectTasktime selectByPrimaryKey(Integer tasktimeId);

    int updateByExampleSelective(@Param("record") TbProjectTasktime record, @Param("example") TbProjectTasktimeExample example);

    int updateByExample(@Param("record") TbProjectTasktime record, @Param("example") TbProjectTasktimeExample example);

    int updateByPrimaryKeySelective(TbProjectTasktime record);

    int updateByPrimaryKey(TbProjectTasktime record);

    List<TbProjectTasktime> queryforPage(@Param("cm") Map<String,Object> map);

    List<CountProjectVo> countByProject(@Param("cm") Map<String,Object> map);

    List<ProjectDetailVo> queryProjectDetails(@Param("cm") Map<String,Object> map);

    List<CountProjectVo> countByStaff(@Param("cm") Map<String,Object> map);

    List<CountProjectVo> countByStaffAll(@Param("cm") Map<String,Object> map);


    int deleteByProjectIds(String[] projectIds);

    List<TbProjectTasktime> taskTimeChange(@Param("cm") Map<String,Object> map);

    List<TaskTimeTypeVo> taskTimeTypeChange(@Param("cm") Map<String,Object> map);

    List<TaskTimeTypeVo> taskTimeStaffSpread(@Param("cm") Map<String,Object> map);

    List<TbProjectTasktime> taskTimeStaffChange(@Param("cm") Map<String,Object> map);

    List<TaskTimeTypeVo> taskTimeTypeSpread2(@Param("cm") Map<String,Object> map);

    List<TaskTimeTypeVo> taskTimeProjectSpread(@Param("cm") Map<String,Object> map);

    int batchInsert(List<TbProjectTasktime> newProjectTaskTimeList);

    int batchUpdateByConditions(List<TbProjectTasktime> oldProjectTaskTimeList);

    void deleteByConditions(@Param("cm")Map<String, Object> conditionMap);
}